/**
 * ajax请求配置
 */
import router from '@/router'
import { getToken } from '@/utils/TokenUtil'
import axios from 'axios'
import { ElNotification } from 'element-plus'

// axios默认配置
axios.defaults.timeout = 10000 // 超时时间
// axios.defaults.baseURL 请求地址前缀
// 微服务地址
axios.defaults.baseURL = '/api'
//如果前端使用代理，baseURL修改为代理地址 如：'/api'
//允许携带cookie
axios.defaults.withCredentials = true
// 整理数据
axios.defaults.transformRequest = function (data) {
  data = JSON.stringify(data)
  return data
}
// 路由请求拦截
axios.interceptors.request.use(
  (config) => {
    config.headers['Content-Type'] = 'application/json;charset=UTF-8'
    config.headers['token'] = getToken()
    return config
  },
  (error) => {
    return Promise.reject(error.response)
  }
)
// 路由响应拦截
axios.interceptors.response.use(
  (response) => {
    if (response.config.responseType === 'blob') {
      return response // 如果是文件下载，直接返回响应
    }
    if (!response.data.sign) {
      if (response.data.code === 10003) {
        router.push('/login')
      }
      ElNotification.error(response.data.message)
      return Promise.reject(response.data.message)
    } else {
      return response
    }
  },
  (error) => {
    if (error && error.data && error.data.message) {
      return Promise.reject(error.data.message)
    } else {
      return Promise.reject(error)
    }
  }
)
export default axios
